<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.xxxx.po.User" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="C" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: 王希辰
  Date: 2021/10/5
  Time: 18:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>forEach标签</title>
</head>
<body>
<%--
    forEach标签
        格式：
            <c:forEach
                items="<object>"
                begin="<int>"
                end="<int>"
                var="<int>"
                step="<string>"
                varStatus="<string>">
            </c:forEach>
        属性：
            begin 开始数
            end 结束数
            var 限域变量名，用来接收当前遍历的成员
            step 间隔数
            items 要循环的数据（list、map、数组等）
        forEach varStatus 属性
            index:当前这次迭代从 0 开始的迭代索引
            count:当前这次迭代从 1 开始的迭代计数
            first:用来表明当前这轮迭代是否为第一次迭代的标志
            last:用来表明当前这轮迭代是否为最后一次迭代的标志

        1.迭代主体内容多次
            <c:forEach begin="开始数" end="结束数" var="限域变量名" step="间隔数"
            </c:forEach>
            相当于Java中的for...int
            for(int i=0;i<10;i++){
            }

        2.循环
            <c:forEach items="要被循环的数据" var="限域变量名"
            </c:forEach>
            相当于Java中的foreach
            for(String str:list){
            }
--%>
    <%--1.迭代主体内容多次--%>
    <c:forEach begin="1" end="10" var="i" step="2">
        ${i}&nbsp;
    </c:forEach>
    <hr>
    <%--2.循环--%>
    <%
        List<String> list=new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add("A:"+i);
        }
        pageContext.setAttribute("list",list);
    %>
    <c:forEach items="${list}" var="item">
        ${item}&nbsp;
    </c:forEach>
<hr>
<table align="center" width="800" border="1" style="border-collapse: collapse">
    <tr>
        <th>名称</th>
        <th>当前成员下标</th>
        <th>当前成员循环数</th>
        <th>是否第一次被循环</th>
        <th>是否最后一次被循环</th>
    </tr>
    <C:forEach items="${list}" var="item" varStatus="itemp">
        <tr>
            <th>${item}</th>
            <th>${itemp.index}</th>
            <th>${itemp.count}</th>
            <th>${itemp.first}</th>
            <th>${itemp.last}</th>
        </tr>
    </C:forEach>
</table>
    <!--循环对象集合-->
    <%
        List<User> userList=new ArrayList<User>();
        User user1=new User(1,"zhangsan","123456");
        User user2=new User(2,"lisi","111");
        User user3=new User(3,"wangwu","222");
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        request.setAttribute("userList",userList);
    %>
    <%--判断集合是否为空--%>
    <c:if test="${!empty userList}">
        <%--不为空开始遍历--%>
        <table align="center" width="800" border="1" style="border-collapse: collapse">
        <tr>
            <th>用户编号</th>
            <th>用户名称</th>
            <th>用户密码</th>
            <th>用户操作</th>
        </tr>
        <c:forEach items="${userList}" var="user">
            <tr align="center">
                <td>${user.userId}</td>
                <td>${user.uname}</td>
                <td>${user.upwd}</td>
                <td><button>修改</button></td>
            </tr>
        </c:forEach>
    </table>
    </c:if>

<%--循环Map--%>
<%
    Map<String,Object> map=new HashMap<>();
    map.put("map1","aaa");
    map.put("map2","bbb");
    map.put("map3","ccc");
    pageContext.setAttribute("map",map);
%>
<c:forEach items="${map}" var="m">
    key:${m.key}&nbsp; value:${m.value}<br>
</c:forEach>
</body>
</html>
